package express.constant;

import com.sun.istack.internal.NotNull;

import java.util.stream.Stream;

/**
 * 运算符枚举
 *
 * @author miweidong
 * @date 2021-08-10 17:59
 */
public enum OperatorEnum {
    /**
     * 加
     */
    ADD("+"),

    /**
     * 减
     */
    SUBTRACT("-"),

    /**
     * 乘
     */
    MULTIPLY("*"),

    /**
     * 除
     */
    DIVIDE("/"),

    /**
     * 等于
     */
    EQUALS("="),

    /**
     * 左括号
     */
    LEFT_PARENTHESES("("),

    /**
     * 右括号
     */
    RIGHT_PARENTHESES(")");

    /**
     * 运算符字符串
     */
    private String key;

    OperatorEnum(String key) {
        this.key = key;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    /**
     * 根据运算符获取运算符枚举
     *
     * @param symbol 运算符
     * @return 运算符枚举
     */
    public static OperatorEnum getOperatorEnumBySymbol(@NotNull String symbol) {
        return Stream.of(OperatorEnum.values()).filter(operatorEnum -> operatorEnum.getKey().equals(symbol))
                .findFirst().orElse(null);
    }
}
